﻿/*
'***************************************************************************************************************************
'Generator 版本：1.1.1000
'<<請依個別狀況自行輸入以下各欄位資料>>
'*程式代號：
'*程式名稱：
'*目    的：
'*
'*備   註 ：
'*版本變更：
'* xx. YYYY/MM/DD	VER		AUTHOR			COMMENTS
'* === ==========	===		=======			==========
''   1. 2004/02/23	1.0		cindy_wu		New Create
'*
'***************************************************************************************************************************

*/
//----共用變數宣告----start----
var SCPKstrDelOtherSession = 'N';
//----共用變數宣告----end------
/***************************************************************************************************************************
''*函數名稱：
''*目    的：
''*參數說明：
''*回 傳 值：
''*版本變更：
''* xx. YYYY/MM/DD        AUTHOR      COMMENTS
''*   1. 2004/06/09	     cindy_wu    New Create
***************************************************************************************************************************/
function SCPK_FullLoginProcedure(vstrOnLinePath, vstrDataPath, vstrApId, vstrUsrId, vstrCompId, vstrTarget) {
	var blnDataReady = false;
	var blnContinue = SCPK_LoginOnLineCheck(vstrOnLinePath);

	if (blnContinue) {
		blnDataReady = SCPK_LoginDataPrepare(vstrDataPath, vstrApId, vstrUsrId, vstrCompId);
	}

	if (blnDataReady) {
		if (vstrTarget == 'parentWindow') {
			var strWinName = window.opener.name;
			if (strWinName == '') {
				window.opener.name = 'Win1';
				vstrTarget = window.opener.name;
			}
			window.close();
		}
		var objForm = document.forms[0];
		//2005/06/14 Anderson 將VIEWSTATE相關控制項移掉，以免post到AP_TOP之後影響到AP那邊如果有用到VIEWSTATE的話會錯
    if (objForm.__VIEWSTATE != undefined) objForm.removeChild(objForm.__VIEWSTATE);
    if (objForm.__EVENTARGUMENT != undefined) objForm.removeChild(objForm.__EVENTARGUMENT);
    if (objForm.__EVENTTARGET != undefined) objForm.removeChild(objForm.__EVENTTARGET);

		objForm.target = vstrTarget;
    //2005/07/28 Anderson 當使用Cookieless模式時，AP的Path在虛擬目錄名稱之後需加上SID
    if(location.href.indexOf('/(') >= 0)
      ModifyApPathforCookieless();

		objForm.action = priApPath;
		objForm.submit();
	}
}
/***************************************************************************************************************************
''*函數名稱：ModifyApPathforCookieless
''*目    的：當使用Cookieless模式時，AP的Path在虛擬目錄名稱之後需加上SID
''*參數說明：
''*回 傳 值：
''*備    註：範例：http://localhost/web_test/(cn42qj55ewyqnq2kphu5t255)/WebForm2.aspx
''*版本變更：
''* xx. YYYY/MM/DD        AUTHOR      COMMENTS
''*  1. 2005/07/28        Anderson    New Create
***************************************************************************************************************************/
function ModifyApPathforCookieless() {
    var intIdx, strA, strB;

		if(priApPath.toLowerCase().indexOf("http") >= 0) //使用絕對路徑時
      intIdx = priApPath.toLowerCase().indexOf("/", priApPath.toLowerCase().indexOf("/", 8) + 1);
		else //使用相對路徑時
      intIdx = priApPath.toLowerCase().indexOf("/", priApPath.toLowerCase().indexOf("/") + 1);

    strA = priApPath.substring(0, intIdx);
    strB = priApPath.substring(intIdx);

    priApPath = strA + '/(' + location.href.substring(location.href.indexOf('/(') + 2, location.href.indexOf(')/')) + ')' + strB;
}
/***************************************************************************************************************************
''*函數名稱：SCPK_LoginOnLineCheck
''*目    的：取得使用者線上狀態，並依據狀態顯示相關訊息
''*參數說明：vstrURL - 取得狀態的網頁位址
''*回 傳 值：是否繼續登入應用系統的工作；true - 繼續，false - 中止
''*備    註：SCPKstrDelOtherSession 的值可能會因為使用者點選了訊息的「確定/取消」而改變
''*版本變更：
''* xx. YYYY/MM/DD        AUTHOR      COMMENTS
''*  1. 2004/05/27        cindy_wu    New Create
''*  2. 2004/06/29        cindy_wu    Modify      把MsgBox的strType換成36（按鈕顯示-是/否）後，「是」回傳值為6
''*  3. 2005/01/28        Anderson    Modify      多一個Status = "SessionTimeOut"做為判斷使用者在主畫面中停留過久，SessionTimeOut了
***************************************************************************************************************************/
function SCPK_LoginOnLineCheck(vstrURL) {

	//----回傳狀態\,訊息內容\,對話框型態\,對話框標題
	var strRtn = window.showModalDialog(vstrURL,'SCPKWin1','dialogWidth=1pt;dialogHeight=1pt;help=0;center=0;resizable=yes');
	var strStatus = strRtn.split('\\,')[0];
	if (strStatus == 'NotOnLine') return true;

	var strMsg = strRtn.split('\\,')[1];
	var strType = strRtn.split('\\,')[2];
	var strTitle = strRtn.split('\\,')[3];
	var strExpression = 'blnMsgBox = MsgBox(\"' + strMsg + '\",' + strType + ',\"' + strTitle + '\")';
	switch (strStatus) {
		case 'SessionTimeOut':
			//----使用者在主畫面中停留過久，SessionTimeOut了
			window.location.replace(window.location.href);
			return false;
			break;
		case 'ConfirmLogin':
			//----此帳號已在線上，若再登入將會強迫另一使用該帳號的使用者離開系統，是否仍要登入？
			window.execScript(strExpression,'VBScript');
			if (blnMsgBox == 6) {
				SCPKstrDelOtherSession = 'Y';
				return true;
			} else {
				return false;
			}
			break;
		case 'RejectLoginAp':
			//----相同使用者代號已在線上，無法登入系統!!
			window.execScript(strExpression,'VBScript');
			return false;
			break;
		case 'JustLoginAp':
			//----不需詢問，直接進入應用系統
			SCPKstrDelOtherSession = 'Y';
			return true;
			break;
		case 'JustLoginApWOKickOutUsr':
			//----不需詢問不踢掉前者，直接進入應用系統
			return true;
			break;
		default:
			//----此帳號已在線上，是否強迫之前帳號離線？
			window.execScript(strExpression,'VBScript');
			if (blnMsgBox == 6) {SCPKstrDelOtherSession = 'Y';}
			return true;
			break;
	}
}
/***************************************************************************************************************************
''*函數名稱：SCPK_LoginDataPrepare
''*目    的：取得線上識別碼，並將資料寫入Client
''*參數說明：vstrURL - 取得線上識別碼的網頁位址
''*回 傳 值：true - 資料準備作業成功，false - 作業失敗
''*備    註：
''*版本變更：
''* xx. YYYY/MM/DD        AUTHOR      COMMENTS
''*   1. 2004/06/09	     cindy_wu    New Create
***************************************************************************************************************************/
function SCPK_LoginDataPrepare(vstrURL, vstrApId, vstrUsrId, vstrCompId) {
	vstrURL = vstrURL + '&strDelOtherSession=' + SCPKstrDelOtherSession;
	var strSID = window.showModalDialog(vstrURL,window,'dialogWidth=1pt;dialogHeight=1pt;help=0;center=0;resizable=yes');

	if (strSID && (strSID.substring(0,4)== "TRUE")) {
		//----之前執行的vstrURL會把需準備的資料寫在document.forms[0]
		return true;
	} else {
		var strExpression = 'blnMsgBox = MsgBox(\"' + strSID + '\",48,\"警告訊息\")';
		window.execScript(strExpression,'VBScript');
		return false;
	}
}
//**************************************************************************************************************************
//*以 showModalDialog 開啟的 SCAppDataPrepare.aspx 會使用此區域內變數與函數
var priUsrId = '';
var priCompId = '';
var priApId = '';
var priSID = '';
var priPrin = '';
var priApPath = '';
function priDataPrepare() {
	var objForm = document.forms[0];
	SCUC_createInputElm(document, objForm, 'strAPID', 'hidden', '', priApId);
	SCUC_createInputElm(document, objForm, 'strSID', 'hidden', '', priSID);
	SCUC_createInputElm(document, objForm, 'strUsrID', 'hidden', '', priUsrId);
	SCUC_createInputElm(document, objForm, 'strCompID', 'hidden', '', priCompId);
	SCUC_createInputElm(document, objForm, 'SCUCstrPrincipal', 'hidden', '', priPrin);
	SCUC_createInputElm(document, objForm, 'zzz', 'hidden', '', '123456789');

}
//**************************************************************************************************************************

